package com.renne.email.service;

import java.util.List;

import com.renne.email.domain.MailSenderConfigQuery;
import com.renne.email.domain.MailSenderConfigVo;

/**
 * 发件人邮箱配置Service接口
 *
 * @author LiuYu
 * @date 2024-07-26
 */
public interface IMailSenderConfigService {
    /**
     * 查询启用的发件人邮箱配置
     *
     * @return 发件人邮箱配置
     */
    public MailSenderConfigVo getEnabledMailSenderConfigVo();

    /**
     * 查询发件人邮箱配置
     *
     * @param senderEmailConfigId 发件人邮箱配置ID
     * @return 发件人邮箱配置
     */
    public MailSenderConfigVo getMailSenderConfigVoById(String senderEmailConfigId);

    /**
     * 查询发件人邮箱配置列表
     *
     * @param query 发件人邮箱配置查询参数
     * @return 发件人邮箱配置集合
     */
    public List<MailSenderConfigVo> getMailSenderConfigVoList(MailSenderConfigQuery query);

    /**
     * 新增发件人邮箱配置
     *
     * @param mailSenderConfigVo 发件人邮箱配置Vo
     * @return 结果
     */
    public int saveMailSenderConfigVo(MailSenderConfigVo mailSenderConfigVo);

    /**
     * 修改发件人邮箱配置
     *
     * @param mailSenderConfigVo 发件人邮箱配置Vo
     * @return 结果
     */
    public int updateMailSenderConfigVo(MailSenderConfigVo mailSenderConfigVo);

    /**
     * 批量删除发件人邮箱配置
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteMailSenderConfigByIds(String ids);

    /**
     * 删除发件人邮箱配置信息
     *
     * @param senderEmailConfigId 发件人邮箱配置ID
     * @return 结果
     */
    public int deleteMailSenderConfigById(String senderEmailConfigId);

    /**
     * 校验发件人邮箱配置名称是否唯一
     *
     * @param senderEmailConfigName 发件人邮箱配置名称
     * @return 结果
     */
    public Boolean checkMailSenderConfigNameUnique(String senderEmailConfigName);

    /**
     * 校验发件人邮箱配置是否唯一
     *
     * @return 结果
     */
    public Boolean checkMailSenderConfigUnique();

}
